package com.encap;

/**
 * @Author 小闽
 * @Date 2024/8/8 17:53
 * @PackageName: com.encap
 * @ClassName: AccountTest
 * @Description: 封装练习·
 * @Version 1.0
 */
public class AccountTest {
    /**
     * 创建程序，在其中定义两个类，Account和AccountTest类体会Java的封装性
     * 1. Account类要求具有属性：姓名（长度为2位3位或4位）、余额（必须>20）、
     *    密码（必须是六位），如果不满足，则给出提示信息，并给默认值
     * 2. 通过setXxx方法给Account的属性赋值
     * 3. 在AccountTest中测试
     *
     */
    public static void main(String[] args) {
     Account account = new Account();
     account.setName("jack");
     account.setBalance(10);
     account.setPassword("666666");
     account.getInfo();

    }
}
class Account{
    // 姓名
    public String name;
    // 余额
    private double balance;
    // 密码
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if(name.length() == 2 || name.length()==3 || name.length() == 4){
            this.name = name;
        }else{
            System.out.println("姓名的长度为2位3位或4位");
            this.name = "";
        }
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        if(balance > 20){
            this.balance = balance;
        }else{
            System.out.println("余额的资金必须要大于20");
            this.balance = 20;
        }
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        if(password.length() >= 6){
            this.password = password;
        }else{
            System.out.println("密码的长度必须为6位");
            this.password = "123456";
        }
    }

    // 输出Account的信息
    public void getInfo(){
        System.out.println("这个人的信息为：" + "\n" +
                "姓名：" +  name + "\n" + "余额：" + balance + "\n" + "密码：" + password);
    }
}